home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 5 / Gekikoh Dennoh Club Vol. 5 (Japan).7z / Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin / internet / webx / webxp040.lzh / Source / micro_console.s < prev    next >
Text File  |  1998-08-01  |  6KB  |  306 lines

  1. *    micro_console.s
  2.  
  3.     .include    DOSCALL.MAC
  4.     .include    IOCSCALL.MAC
  5.  
  6.     .xdef    _McInit,_McPrint,_McDbPrint,_McCursorTop
  7.     .xref    put_6x12_jt,put_12x12_jt
  8.     .xref    show_mouse_cursor,hide_mouse_cursor
  9.     .xref    _d_option,_ms_pos_x,_ms_pos_y
  10.  
  11. TEXTVRAM    equ    $e0_0000
  12. CRTC_R21    equ    $e8_002a
  13.  
  14. NEXT_LINE    equ    128    * éPâëâCâôéáé╜éΦé╠âoâCâgÉö
  15. MC_ADR        equ    TEXTVRAM+$60000+NEXT_LINE*358+34*2
  16. MC_BIT        equ    2
  17. MC_LINE        equ    10
  18. MC_XSIZE    equ    18*12
  19.  
  20.     .text
  21.     .even
  22.  
  23. _McInit:
  24.     move.l    #MC_ADR+(MC_LINE-1)*12*NEXT_LINE,mc_a2
  25.     move.w    #MC_BIT,mc_d5
  26.     clr.w    mc_d7
  27.     rts
  28.  
  29.  
  30. ****************************************************************
  31. _McDbPrint:        * âfâoâbâOùp McPrint
  32.             * -d âIâvâVâçâôé¬ÄwÆΦé│éΩé─éóé╜éτ Mc é╞òWÅÇÅoù═é╔Åoù═
  33.             * é╗éñé┼é╚é»éΩé╬ë╜éαé╣é╕é╔ïAéΘ
  34.             * in  : 8(a6).l = ò\Īé╖éΘò╢ÄÜù±é╠âAâhâîâX
  35.     tst.b    _d_option
  36.     beq    McDbPrint_rts
  37.  
  38.     link    a6,#0
  39.     move.l    8(a6),-(sp)
  40.     bsr    _McPrint
  41.     addq.w    #4,sp
  42.     unlk    a6
  43.  
  44. McDbPrint_rts:
  45.     rts
  46.  
  47.  
  48. ****************************************************************
  49. _McCursorTop:        * âJü[â\âïé≡ìsé╠ɵô¬é╔üié⌐é┬üAé╗é╠ìsé≡âNâèâAüj
  50.     movem.l    d1/a0-a1,-(sp)
  51.  
  52.     movea.l    #MC_ADR+(MC_LINE-1)*12*NEXT_LINE,a0
  53.     move.l    a0,mc_a2
  54.     move.w    #MC_BIT,mc_d5
  55.     clr.w    mc_d7
  56.  
  57.     suba.l    a1,a1        * âXü[âpü[é╔
  58.     IOCS    _B_SUPER
  59.     move.l    d0,-(sp)
  60.  
  61.     moveq.l    #12-1,d0
  62.     moveq.l    #0,d1
  63. 1:    move.l    d1,(a0)+
  64.     move.l    d1,(a0)+
  65.     move.l    d1,(a0)+
  66.     move.l    d1,(a0)+
  67.     move.l    d1,(a0)+
  68.     move.l    d1,(a0)+
  69.     move.l    d1,(a0)+
  70.     move.b    #$02,-1(a0)    * èOÿgé≡ò`ëµüiéñéφü[üj
  71.     lea.l    NEXT_LINE-4*7(a0),a0
  72.     dbra    d0,1b
  73.  
  74.     movea.l    (sp)+,a1
  75.     IOCS    _B_SUPER
  76.  
  77.     movem.l    (sp)+,d1/a0-a1
  78.     rts
  79.  
  80. ****************************************************************
  81. _McPrint:
  82.             * in  : 8(a6).l = ò\Īé╖éΘò╢ÄÜù±é╠âAâhâîâX
  83.     link    a6,#-2
  84.     movem.l    d1-d7/a0-a5,-(sp)
  85.  
  86.     tst.b    _d_option
  87.     beq    @f
  88.     move.l    8(a6),-(sp)
  89.     DOS    _PRINT
  90.     addq.w    #4,sp
  91. @@:
  92.  
  93.     suba.l    a1,a1        * âXü[âpü[é╔
  94.     IOCS    _B_SUPER
  95.     move.l    d0,-(sp)
  96.  
  97.     clr.w    -2(a6)        * â}âEâXâJü[â\âïÅ┴é╡é╜âtâëâO
  98.     move.w    _ms_pos_x,d0
  99.     cmpi.w    #288+256,d0
  100.     blt    @f
  101.     move.w    _ms_pos_y,d0
  102.     cmpi.w    #356,d0
  103.     blt    @f
  104.     cmpi.w    #480+16,d0
  105.     bgt    @f
  106.     st.b    -2(a6)
  107.     bsr    hide_mouse_cursor    * microconsole ôαé╔â}âEâXâJü[â\âïé¬éáéΘÄ₧é╠é▌
  108.                     * â}âEâXé≡Å┴é╖
  109. @@:
  110.  
  111.     movea.l    8(a6),a4    * a4.l = ò\Īé╖éΘò╢ÄÜù±
  112. McPrint_loop:
  113.     movea.l    mc_a2,a2
  114.     move.w    mc_d5,d5
  115.     move.w    #MC_XSIZE,d6
  116.     move.w    mc_d7,d7
  117.     bsr    draw1
  118.     tst.b    -1(a4)
  119.     beq    McPrint_rts
  120.  
  121.             * ìsé╠ëEÆ[é╔ÆBé╡é╜ or $0a é≡î⌐é┬é»é╜
  122. *    cmpi.b    #$0a,-1(a4)    * cr?
  123. *    bne    @f
  124.  
  125.     move.l    #MC_ADR+(MC_LINE-1)*12*NEXT_LINE,mc_a2
  126.     move.w    #MC_BIT,mc_d5
  127.     clr.w    mc_d7
  128.  
  129.             * éPìsâXâNâìü[âïâAâbâv
  130.     clr.w    CRTC_R21
  131.     lea.l    MC_ADR,a1
  132.     lea.l    12*NEXT_LINE(a1),a0
  133.  
  134.     moveq.l    #MC_LINE-1-1,d1
  135. 1:
  136.     moveq.l    #12-1,d0
  137. 2:    move.l    (a0)+,(a1)+
  138.     move.l    (a0)+,(a1)+
  139.     move.l    (a0)+,(a1)+
  140.     move.l    (a0)+,(a1)+
  141.     move.l    (a0)+,(a1)+
  142.     move.l    (a0)+,(a1)+
  143.     move.l    (a0)+,(a1)+
  144.     lea.l    NEXT_LINE-4*7(a0),a0
  145.     lea.l    NEXT_LINE-4*7(a1),a1
  146.     dbra    d0,2b
  147.     dbra    d1,1b
  148.  
  149.     movea.l    a1,a0
  150.     moveq.l    #12-1,d0
  151.     moveq.l    #0,d1
  152. 1:    move.l    d1,(a0)+
  153.     move.l    d1,(a0)+
  154.     move.l    d1,(a0)+
  155.     move.l    d1,(a0)+
  156.     move.l    d1,(a0)+
  157.     move.l    d1,(a0)+
  158.     move.l    d1,(a0)+
  159.     move.b    #$02,-1(a0)    * èOÿgé≡ò`ëµüiéñéφü[üj
  160.     lea.l    NEXT_LINE-4*7(a0),a0
  161.     dbra    d0,1b
  162.  
  163.     bra    McPrint_loop
  164.  
  165. McPrint_rts:
  166.     move.l    a2,mc_a2
  167.     move.w    d5,mc_d5
  168.     move.w    d7,mc_d7
  169.  
  170.     tst.w    -2(a6)
  171.     beq    @f
  172.     bsr    show_mouse_cursor
  173. @@:
  174.     movea.l    (sp)+,a1
  175.     IOCS    _B_SUPER
  176.  
  177.     movem.l    (sp)+,d1-d7/a0-a5
  178.     unlk    a6
  179.     rts
  180.  
  181. ****************************************************************
  182. *    éPìsò\Īâïü[â`âô
  183.         * æ¼ôxì┼ùDɵé╠é╜é▀âîâWâXâ^ò█æ╢é╚é╡üI
  184.         * âXü[âpü[é┼î─é╘é▒é╞
  185.         * a4.l é¬ \0 é≡îƒÅoé╖éΘé⌐âhâbâgÉö鬠d6.w é╔é╚é┴é╜éτïAéΘ
  186. draw1:        * in  : a4.l = ò\Īé╖éΘò╢ÄÜù±é╠âAâhâîâX
  187.         *    a2.l = ò\Īé╖éΘ TEXTVRAM ì╢Æ[é╠âAâhâîâX
  188.         *    d5.w = ò\Īé╖éΘ TEXTVRAM Åπé╠âhâbâgÉö 0~15
  189.         *    d6.w = ò\Īé╖éΘâhâbâgÉö
  190.         *    d7.w = âhâbâgÉö
  191.         * out : a4.l = Äƒé╠âAâhâîâX
  192.     move.w    CRTC_R21,-(sp)
  193.     move.w    #%11_10000000,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiìòé┼ò`ëµüj
  194.  
  195. draw1_loop:
  196.     moveq.l    #0,d1
  197.     move.b    (a4)+,d1    * d1.w = ò╢ÄÜâRü[âh
  198.     beq    draw1_rts
  199.     bpl    draw1_ö╝èpæOö╝    * $00~$7f é═ö╝èpæOö╝
  200.  
  201.     cmpi.b    #$a0,d1
  202.     bcs    @f
  203.     cmpi.b    #$df,d1        * $a0-$df é═ö╝èpîπö╝
  204. *    bls    draw1_ö╝èpîπö╝
  205. @@:
  206.  
  207.     move.b    d1,-(sp)    * lsl.w #8,d1 éµéΦæ¼éóé┴é─ùßé╠âäâc
  208.     move.w    (sp)+,d1    *
  209.     move.b    (a4)+,d1    * d1.w = ò╢ÄÜâRü[âh
  210.  
  211. *    cmpi.w    #$80ff,d1
  212. *    bls    draw1_éQâoâCâgö╝èp    * $80xx é═éQâoâCâgö╝èp
  213.     cmpi.w    #'êƒ',d1
  214.     bcs    draw1_æSèpö±è┐ÄÜ
  215.     cmpi.w    #'ÿƒ',d1
  216.     bcs    draw1_æSèpæµéPÉàÅÇ
  217.     cmpi.w    #'Ωó',d1
  218.     bls    draw1_æSèpæµéQÉàÅÇ
  219. *    cmpi.w    #$f3ff,d1
  220. *    bls    draw1_éQâoâCâgö╝èp    * $f0xx-$f3xx é═éQâoâCâgö╝èp
  221.  
  222.     bra    draw1_next    * é▒é▒é╔é═ùêé╚éóânâY
  223.  
  224. ****    ****
  225. draw1_next:
  226.     add.w    d0,d5
  227. 1:    cmpi.w    #16,d5
  228.     bcs    2f
  229.     addq.w    #2,a2
  230.     subi.w    #16,d5
  231.     bra    1b
  232. 2:
  233.     bra    draw1_loop
  234. draw1_rts:
  235.     move.w    (sp)+,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
  236.  
  237.     rts
  238.  
  239.  
  240.  
  241. ****************************************************************
  242.  
  243.  
  244. draw1_ö╝èpæOö╝:
  245. *    cmpi.b    #$09,d1
  246. *    beq    draw1_tab
  247. *    cmpi.b    #$0d,d1
  248. *    beq    draw1_cr
  249.     cmpi.b    #$0a,d1
  250.     beq    draw1_rts
  251. *    cmpi.b    #$1a,d1
  252. *    beq    draw1_rts
  253.  
  254.     addq.w    #6,d7        * ò╢ÄÜé╠âhâbâgÉö
  255.     cmp.w    d6,d7
  256.     ble    @f
  257.     subq.w    #1,a4
  258.     bra    draw1_rts
  259. @@:
  260.     moveq.l    #6,d2        * 12x12 dot
  261.     IOCS    _FNTADR
  262.     movea.l    d0,a1        * a1.l = âtâHâôâgâAâhâîâX
  263.  
  264.     move.w    d5,d0
  265.     lea.l    put_6x12_jt(pc),a0
  266.     add.w    d0,d0
  267.     move.w    (a0,d0.w),d0
  268.     jsr    (a0,d0.w)
  269.  
  270.     moveq.l    #6,d0        * ò╢ÄÜé╠âhâbâgÉö
  271.     bra    draw1_next
  272.  
  273.  
  274. ****************************************************************
  275. draw1_æSèpö±è┐ÄÜ:
  276. draw1_æSèpæµéPÉàÅÇ:
  277. draw1_æSèpæµéQÉàÅÇ:
  278.     addi.w    #12,d7        * ò╢ÄÜé╠âhâbâgÉö
  279.     cmp.w    d6,d7
  280.     ble    @f
  281.     subq.w    #2,a4
  282.     bra    draw1_rts
  283. @@:
  284.  
  285.     moveq.l    #6,d2        * 12x12 dot
  286.     IOCS    _FNTADR
  287.     movea.l    d0,a1        * a1.l = âtâHâôâgâAâhâîâX
  288.  
  289.     move.w    d5,d0
  290.     lea.l    put_12x12_jt(pc),a0
  291.     add.w    d0,d0
  292.     move.w    (a0,d0.w),d0
  293.     jsr    (a0,d0.w)
  294.  
  295.     moveq.l    #12,d0        * ò╢ÄÜé╠âhâbâgÉö
  296.     bra    draw1_next
  297.  
  298.  
  299. ****************************************************************
  300.     .bss
  301.     .even
  302. mc_a2:    .ds.l    1
  303. mc_d5:    .ds.w    1
  304. mc_d7:    .ds.w    1
  305.  
  306.